<?php

/**
 * 冒泡排序: 时间复杂度 O(n^2), 属于效率一般但非常好理解的一种算法，而且是一个稳定的排序算法。
 */
function BubbleSort($numbers) {
    $n = count($numbers);
    for ($i = 0; $i < $n - 1; $i++) { // 外层循环 n - 1
        for ($j = 0; $j < $n - $i - 1; $j++) { // 内层循环 n - 1 - i
            if ($numbers[$j] > $numbers[$j + 1]) { // 两两相比来交换
                $temp = $numbers[$j + 1];
                $numbers[$j + 1] = $numbers[$j];
                $numbers[$j] = $temp;
                // list($numbers[$j + 1], $numbers[$j]) = [$numbers[$j], $numbers[$j + 1]];
            }
        }
    }
    return implode(', ', $numbers);
}

$numbers = [49, 38, 65, 97, 76, 13, 27, 49];
echo "原始数据: " . implode(', ', $numbers), PHP_EOL;
echo "冒泡排序结果: " . BubbleSort($numbers), PHP_EOL;
//13, 27, 38, 49, 49, 65, 76, 97